#include "dataLen.h"
namespace joshua
{
    int print_data_len()
    {
        using std::cout, std::endl, std::numeric_limits, std::string;
        fmt::println("type: \t\t****size****\t\t****maxVal****\t\t****minVal****");
        int boolMax = (numeric_limits<bool>::max)(), boolMin = (numeric_limits<bool>::min)();
        fmt::println("bool: \t\t占用字节数:{}\t\t最大值:{},\t\t最小值:{}", sizeof(bool), boolMax, boolMin);
        long charMax = (numeric_limits<char>::max)(), charMin = (numeric_limits<char>::min)();
        fmt::println("char: \t\t占用字节数:{}\t\t最大值:{},\t\t最小值:{}", sizeof(char), charMax, charMin);
        long signedCharMax = (numeric_limits<signed char>::max)(), signedCharMin = (numeric_limits<signed char>::min)();
        fmt::println("signed char:\t占用字节数:{}\t\t最大值:{},\t\t最小值:{}", sizeof(signed char), signedCharMax, signedCharMin);
        long unsignedCharMax = (numeric_limits<unsigned char>::max)(), unsignedCharMin = (numeric_limits<unsigned char>::min)();
        fmt::println("unsigned char:\t占用字节数:{}\t\t最大值:{},\t\t最小值:{}", sizeof(unsigned char), unsignedCharMax, unsignedCharMin);
        long wCharMax = (numeric_limits<wchar_t>::max)(), wCharMin = (numeric_limits<wchar_t>::min)();
        fmt::println("wchar_t: \t占用字节数:{}\t\t最大值:{},\t\t最小值:{}", sizeof(wchar_t), wCharMax, wCharMin);
        int shortMax = (numeric_limits<short>::max)(), shortMin = (numeric_limits<short>::min)();
        fmt::println("short: \t\t占用字节数:{}\t\t最大值:{},\t\t最小值:{}", sizeof(short), shortMax, shortMin);
        int intMax = (numeric_limits<int>::max)(), intMin = (numeric_limits<int>::min)();
        fmt::println("int: \t\t占用字节数:{}\t\t最大值:{},\t\t最小值:{}", sizeof(int), intMax, intMin);
        long long unsignedMax = (numeric_limits<unsigned>::max)(), unsignedMin = (numeric_limits<unsigned>::min)();
        fmt::println("unsigned \t占用字节数:{}\t\t最大值:{},\t\t最小值:{}", sizeof(unsigned), unsignedMax, unsignedMin);
        long longMax = (numeric_limits<long>::max)(), longLongMin = (numeric_limits<long>::min)();
        fmt::println("long: \t\t占用字节数:{}\t\t最大值:{},\t\t最小值:{}", sizeof(long), longMax, longLongMin);
        long long unsignedLongMax = (numeric_limits<unsigned long>::max)(), unsignedLongMin = (numeric_limits<unsigned long>::min)();
        fmt::println("unsigned long: \t占用字节数:{}\t\t最大值:{},\t\t最小值:{}", sizeof(unsigned long), unsignedLongMax, unsignedLongMin);
        long double longDoubleMax = (numeric_limits<long double>::max)(), longDoubleMin = (numeric_limits<long double>::min)();
        fmt::println("long double: \t占用字节数:{}\t\t最大值:{},\t\t最小值:{}", sizeof(long double), longDoubleMax, longDoubleMin);
        double doubleMax = (numeric_limits<double>::max)(), doubleMin = (numeric_limits<double>::min)();
        fmt::println("double: \t占用字节数:{}\t\t最大值:{},\t\t最小值:{}", sizeof(double), doubleMax, doubleMin);
        float floatMax = (numeric_limits<float>::max)(), floatMin = (numeric_limits<float>::min)();
        fmt::println("float: \t\t占用字节数:{}\t\t最大值:{},\t\t最小值:{}", sizeof(float), floatMax, floatMin);
        auto sizetMax = (numeric_limits<size_t>::max)(), sizetMin = (numeric_limits<size_t>::min)();
        fmt::println("size_t: \t占用字节数:{}\t\t最大值:{},\t\t最小值:{}", sizeof(size_t), sizetMax, sizetMin);
        // cout << "string: \t" << "占用字节数:" << sizeof(string) << endl;
        // // << "\t最大值:" << (numeric_limits<string>::max)() << "\t最小值:" << (numeric_limits<string>::min)() << endl;
        fmt::print("type: \t\t  ************size**************");
        return 0;
    }
}